Source: Low-Income Energy Affordability Data, 2018 Update
glimpse(lead)
## Rows: 11
## Columns: 37
## $ FIP <dbl> 51001090100, 51001090200, 51001090300, 510010…
## $ county <chr> "Accomack", "Accomack", "Accomack", "Accomack…
## $ tract <dbl> 901, 902, 903, 904, 905, 906, 907, 908, 9301,…
## $ totalinc <dbl> 106773487, 129612461, 61442032, 120047897, 53…
## $ totalelep <dbl> 6143964, 6615628, 2167116, 4461609, 2081862, …
## $ totalgas <dbl> 955390.4, 2182387.7, 709611.5, 1232994.8, 731…
## $ totalother <dbl> 321101.4, 516012.6, 311333.1, 410918.6, 43256…
## $ averageburden <dbl> 6.949718, 7.186059, 5.188728, 5.085905, 6.031…
## $ avg_hh_exp <dbl> 4748.120, 3657.473, 3077.275, 3053.370, 3110.…
## $ lowburden <dbl> 683.9598, 1096.5446, 440.7706, 1058.9761, 462…
## $ highburden <dbl> 184.2558, 483.4608, 194.3784, 394.9814, 157.6…
## $ veryhighburden <dbl> 341.3380, 634.9627, 208.8109, 400.2121, 180.2…
## $ extremelyhighburden <dbl> 291.1445, 300.4294, 149.9686, 201.2892, 200.1…
## $ totalunits <dbl> 1500.6981, 2515.3974, 993.9284, 2055.4588, 10…
## $ numberburdened <dbl> 816.7382, 1418.8528, 553.1579, 996.4827, 538.…
## $ percentburdened <dbl> 54.42389, 56.40671, 55.65369, 48.47982, 53.78…
## $ total_0_30 <dbl> 167.4056, 263.7055, 186.7433, 309.1969, 202.3…
## $ total_30_60 <dbl> 182.5965, 390.5556, 153.4957, 391.8459, 155.7…
## $ total_60_80 <dbl> 136.92566, 366.98719, 144.03470, 238.49260, 9…
## $ total_80_100 <dbl> 161.44690, 327.18867, 96.45968, 161.76691, 93…
## $ total_over_100 <dbl> 852.3234, 1166.9604, 413.1950, 954.1566, 453.…
## $ burdened_0_30 <dbl> 167.4056, 263.7055, 186.7433, 304.8229, 202.3…
## $ burdened_30_60 <dbl> 182.5965, 369.1552, 151.0950, 366.3732, 154.2…
## $ burdened_60_80 <dbl> 135.96044, 324.84586, 129.60361, 174.95300, 8…
## $ burdened_80_100 <dbl> 157.32611, 280.91965, 58.84603, 98.76576, 67.…
## $ burdened_over_100 <dbl> 173.44962, 180.22663, 26.86993, 51.56778, 28.…
## $ percent_0_30 <dbl> 100.00000, 100.00000, 100.00000, 98.58538, 10…
## $ percent_30_60 <dbl> 100.00000, 94.52052, 98.43594, 93.49933, 99.0…
## $ percent_60_80 <dbl> 99.29508, 88.51695, 89.98083, 73.35783, 88.88…
## $ percent_80_100 <dbl> 97.44759, 85.85861, 61.00583, 61.05437, 72.21…
## $ percent_over_100 <dbl> 20.350211, 15.444108, 6.502966, 5.404541, 6.3…
## $ total_owners <dbl> 1160.5645, 1820.6219, 676.0099, 1180.9014, 64…
## $ total_renters <dbl> 349.7431, 696.1272, 318.2414, 889.5201, 359.8…
## $ burdened_owners <dbl> 529.8751, 949.5822, 317.8923, 478.9872, 286.2…
## $ burdened_renters <dbl> 286.8631, 469.2706, 235.2655, 517.4956, 251.8…
## $ percent_burdened_owners <dbl> 45.65667, 52.15702, 47.02481, 40.56115, 44.68…
## $ percent_burdened_renters <dbl> 82.02109, 67.41163, 73.92675, 58.17694, 69.98…
Observations are census tract estimates of:
totalinc)totalelep, totalgas, totalother)averageburden)
avg_hh_exp)lowburden)highburden)veryhighburden)extremelyhighburden)totalunits)numberburdened)
percentburdened)total_0_30)total_30_60)total_60_80)total_80_100)total_over_100)burdened_0_30, burdened_30_60, burdened_60_80, burdened_80_100, burdened_over_100)percent_0_30, percent_30_60, percent_60_80, percent_80_100, percent_over_100)total_owners)total_renters)burdened_owners)burdened_renters)percent_burdened_owners)percent_burdened_renters)Summary of all non-missing variables:
lead %>% select(-c(FIP:tract)) %>%
select(where(~is.numeric(.x) && !is.na(.x))) %>%
as.data.frame() %>%
stargazer(., type = "text", title = "Summary Statistics", digits = 0,
summary.stat = c("mean", "sd", "min", "median", "max"))
##
## Summary Statistics
## =================================================================================
## Statistic Mean St. Dev. Min Median Max
## ---------------------------------------------------------------------------------
## totalinc 99,792,683 26,921,352 53,813,976 106,773,487 129,612,461
## totalelep 3,984,222 1,430,539 2,081,862 3,807,970 6,615,628
## totalgas 1,098,016 430,572 709,611 955,390 2,182,388
## totalother 404,038 87,880 307,947 399,768 544,453
## averageburden 6 1 5 5 7
## avg_hh_exp 3,264 548 2,712 3,108 4,748
## lowburden 858 258 441 957 1,140
## highburden 261 104 158 234 483
## veryhighburden 315 125 180 290 635
## extremelyhighburden 222 53 143 232 300
## totalunits 1,656 455 994 1,788 2,515
## numberburdened 798 249 538 775 1,419
## percentburdened 48 6 39 48 56
## total_0_30 236 50 167 245 309
## total_30_60 240 85 153 197 392
## total_60_80 187 81 96 149 367
## total_80_100 169 63 93 162 327
## total_over_100 825 241 413 869 1,167
## burdened_0_30 234 49 167 245 307
## burdened_30_60 230 76 151 197 369
## burdened_60_80 160 70 85 137 325
## burdened_80_100 120 62 59 99 281
## burdened_over_100 54 61 15 29 180
## percent_0_30 99 2 95 100 100
## percent_30_60 97 3 92 96.3 100
## percent_60_80 86 10 65 89 99
## percent_80_100 69 13 57 64 97
## percent_over_100 6 6 1 5 20
## total_owners 1,130 337 641 1,161 1,821
## total_renters 533 173 318 499 890
## burdened_owners 472 179 286 461 950
## burdened_renters 325 93 235 287 517
## percent_burdened_owners 42 6 32 43 52
## percent_burdened_renters 63 10 51 61 82
## ---------------------------------------------------------------------------------
Visual distributions of the data, shown with histograms and scatterplots
lead %>% select(FIP, averageburden) %>%
pivot_longer(-FIP, names_to = "measure", values_to = "value") %>%
ggplot(aes(x = value, fill = measure)) +
geom_histogram() +
facet_wrap(~measure, scales = "free")
lead %>% select(FIP, percentburdened) %>%
pivot_longer(-FIP, names_to = "measure", values_to = "value") %>%
ggplot(aes(x = value, fill = measure)) +
geom_histogram(binwidth = 2) +
facet_wrap(~measure, scales = "free")
lead %>% select(FIP, percent_0_30:percent_over_100) %>%
pivot_longer(-FIP, names_to = "measure", values_to = "value") %>%
ggplot(aes(x = value, fill = measure)) +
geom_histogram() +
facet_wrap(~measure, scales = "free")
lead %>% select(FIP, percent_burdened_owners, percent_burdened_renters) %>%
pivot_longer(-FIP, names_to = "measure", values_to = "value") %>%
ggplot(aes(x = value, fill = measure)) +
geom_histogram(binwidth = 4) +
facet_wrap(~measure, scales = "free")
Maps to show the distribution of variables across spatial units
pal <- colorNumeric("plasma", reverse = TRUE, domain = easternshapes$averageburden)
leaflet(easternshapes) %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(data = easternshapes,
fillColor = ~pal(averageburden),
weight = 1,
opacity = 1,
color = "white",
fillOpacity = 0.6,
highlight = highlightOptions(weight = 2, fillOpacity = 0.8, bringToFront = T),
popup = paste0("Tract Number: ", easternshapes$tract, "<br>",
"Avg. Burden: ", round(easternshapes$averageburden, 2))) %>%
addLegend("bottomright", pal = pal, values = easternshapes$averageburden,
title = "Average Energy Burden", opacity = 0.7)
pal <- colorNumeric("plasma", reverse = TRUE, domain = easternshapes$avg_hh_exp)
leaflet(easternshapes) %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(data = easternshapes,
fillColor = ~pal(avg_hh_exp),
weight = 1,
opacity = 1,
color = "white",
fillOpacity = 0.6,
highlight = highlightOptions(weight = 2, fillOpacity = 0.8, bringToFront = T),
popup = paste0("Tract Number: ", easternshapes$tract, "<br>",
"Avg. Household Energy Expenditures: ", round(easternshapes$avg_hh_exp, 2))) %>%
addLegend("bottomright", pal = pal, values = easternshapes$avg_hh_exp,
title = "Average Yearly Household Energy Expenditures", opacity = 0.7)
pal <- colorNumeric("plasma", reverse = TRUE, domain = easternshapes$numberburdened)
leaflet(easternshapes) %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(data = easternshapes,
fillColor = ~pal(numberburdened),
weight = 1,
opacity = 1,
color = "white",
fillOpacity = 0.6,
highlight = highlightOptions(weight = 2, fillOpacity = 0.8, bringToFront = T),
popup = paste0("Tract Number: ", easternshapes$tract, "<br>",
"Number Burdened: ", round(easternshapes$numberburdened, 2))) %>%
addLegend("bottomright", pal = pal, values = easternshapes$numberburdened,
title = "Number of Energy Burdened Households", opacity = 0.7)
pal <- colorNumeric("plasma", reverse = TRUE, domain = easternshapes$percentburdened)
leaflet(easternshapes) %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(data = easternshapes,
fillColor = ~pal(percentburdened),
weight = 1,
opacity = 1,
color = "white",
fillOpacity = 0.6,
highlight = highlightOptions(weight = 2, fillOpacity = 0.8, bringToFront = T),
popup = paste0("Tract Number: ", easternshapes$tract, "<br>",
"Pct. Burdened: ", round(easternshapes$percentburdened, 2), "<br>",
"Pct. Burdened - 0-30% AMI: ", round(easternshapes$percent_0_30, 2), "<br>",
"Pct. Burdened - 30-60% AMI: ", round(easternshapes$percent_30_60, 2), "<br>",
"Pct. Burdened - 60-80% AMI: ", round(easternshapes$percent_60_80, 2), "<br>",
"Pct. Burdened - 80-100% AMI: ", round(easternshapes$percent_80_100, 2), "<br>",
"Pct. Burdened - 100%+ AMI: ", round(easternshapes$percent_over_100, 2))) %>%
addLegend("bottomright", pal = pal, values = easternshapes$percentburdened,
title = "Percent of Energy Burdened Households", opacity = 0.7)
pal <- colorNumeric("plasma", reverse = TRUE, domain = easternshapes$percent_burdened_renters)
leaflet(easternshapes) %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(data = easternshapes,
fillColor = ~pal(percent_burdened_renters),
weight = 1,
opacity = 1,
color = "white",
fillOpacity = 0.6,
highlight = highlightOptions(weight = 2, fillOpacity = 0.8, bringToFront = T),
popup = paste0("Tract Number: ", easternshapes$tract, "<br>",
"Pct. of Renters Burdened: ", round(easternshapes$percent_burdened_renters, 2))) %>%
addLegend("bottomright", pal = pal, values = easternshapes$percent_burdened_renters,
title = "Percent of Energy Burdened Rented Households", opacity = 0.7)
pal <- colorNumeric("plasma", reverse = TRUE, domain = easternshapes$percent_burdened_owners)
leaflet(easternshapes) %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(data = easternshapes,
fillColor = ~pal(percent_burdened_owners),
weight = 1,
opacity = 1,
color = "white",
fillOpacity = 0.6,
highlight = highlightOptions(weight = 2, fillOpacity = 0.8, bringToFront = T),
popup = paste0("Tract Number: ", easternshapes$tract, "<br>",
"Pct. of Owners Burdened: ", round(easternshapes$percent_burdened_owners, 2))) %>%
addLegend("bottomright", pal = pal, values = easternshapes$percent_burdened_owners,
title = "Percent of Energy Burdened Owned Households", opacity = 0.7)
Census tracts 9801, 9802, 9901, and 9902 (all from Accomack County) do not appear in this data set. 9901 and 9902 contain only water. 9801 and 9802 contain land, but have a population of 0.